package com.tpyule.tpclass.service;

import com.tpyule.tpclass.entity.bean.ResultBean;
import com.tpyule.tpclass.entity.bo.CourseBo;
import com.tpyule.tpclass.entity.bo.CourseDetailBo;
import com.tpyule.tpclass.entity.bo.CourseManageBo;
import com.tpyule.tpclass.entity.dto.*;
import com.tpyule.tpclass.entity.pojo.Course;

import java.util.List;

/**
 * @author zzz
 * @version 1.0
 * @date 2020/3/20 19:51
 */
public interface CourseService {
    /**
     * 前台查找课程
     * @param courseParamDto
     * @return
     */
    public List<Course> getAllCourse(CourseParamDto courseParamDto);


    /**
     * 获取管理课程信息
     * @param dto 课程查询参数
     * @return
     */
    public List<CourseManageBo> getListManageCourse(CourseManageQueryDto dto);

    /**
     * 获取管理课程信息数量
     * @param dto 课程查询参数
     * @return
     */
    public int getSizeManageCourse(CourseManageQueryDto dto);

    /**
     * 获取管理审核课程信息
     * @param dto 课程查询参数
     * @return
     */
    public List<CourseManageBo> getListAuditCourse(CourseManageQueryDto dto);


    /**
     * 获取管理审核课程信息数量
     * @param dto 课程查询参数
     * @return
     */
    public int getSizeAuditCourse(CourseManageQueryDto dto);



    /**
     * 教师获取自己课程的相关信息
     * @param courseByTId
     * @return
     */
    public List<Course> getListCourseByTeacherId(CourseByTId courseByTId);

    /**
     * 根据课程ID获取课程信息
     * @param courseId
     * @return
     */
    public Course getCourseById(String courseId);
    public String addCourse(Course course);

    /**
     * 获取课程的所有章节
     * @param courseId
     * @return
     */
    public List<CourseCDto> getCourseCS(String courseId);

    /**
     * 根据课程Id删除课程（软删除）
     * @param courseId
     * @return
     */
    public boolean deleteCourseById(String courseId);

    /**
     * 获取课程详情页的数据对象
     * @param courseId
     * @return
     */
    public ResultBean getCourseDetail(String courseId);

    public List<CourseCDto> getCourseCSByUser(String courseId,String userId);

    /**
     * 更新课程
     * @param course
     * @return
     */
    public int updateCourse(Course course);

    /**
     * 更新课程Detail
     * @param bo
     * @return
     */
    public int updateCourseDetail(CourseBo bo);


    /**
     * 更新课程
     * @param dto
     * @return
     */
    public int updateCourseState(CourseStateDto dto);

    /**
     * 查询课程数量
     * @param courseParamDto
     * @return
     */
    public int getSizeCourse(CourseParamDto courseParamDto);

    /**
     * 查询问题对应的课程信息
     * @param questionId
     * @return
     */
    public Course getCourseByQId(String questionId);


    /**
     * 获取state=1=2 审核通过的
     * @param userId
     * @return
     */
    public List<Course> getCourseToShow(String userId);


    /**
     * 用户修改课程基本信息
     * @param courseId
     * @return
     */
    public CourseBo getCourseBoById(String courseId);


    /**
     * 更新学习人数
     * @param courseId
     */
    public void addNumber(String courseId);
}
